<?php
interface IAccessHandler extends IArrowSingleton {
	
	public function turnOn();	
	public function turnOff();
	public function isOn();  
	
	/**
     * Sprawdzenie dostępu do beana
     * @param [sting|bean bject] $bean - string ze ścierzką bądź obiekt beana 
     * @param string $action - future params 
     * @param int $silent - [MODE_SILENT|MODE_LOUD] - sposób zachowania
     * @return bool - czy jest dostęp czy nie
     */
    public function isBeanAccessible( $bean, $action = "execute" , $silent = false );
	
	/**
     * Sprawdzenie dostępu do templata
     * @param [sting|template bject] $template - string ze ścierzką bądź obiekt templata 
     * @param string $action - future params 
     * @param int $silent - [MODE_SILENT|MODE_LOUD] - sposób zachowania
     * @return bool - czy jest dostęp czy nie
     */
	public function isTemplateAccessible( $template, $action = "show" , $silent = false );
	
	/**
	 * Sprawdza uprawnienia do obiektu - modelu 
	 * @param string/object $mixed
	 * @param string $action  [action|model:action]  - możemy zmienić model dla którego wykonywana jest akcja
	 * @param int $mode - mode = 0 tryb głośny $mode = 1 tryb cichy
	 * @return bool or blocade 
	 */
//	public  function check( $mixed, $action, $mode = 0 );
	
	/**
	 * Zwraca true jeśli przekazany użytkownik (w przypadku jego braku bierzący) ma prawo do edycji obiektu
	 * @param string $model - model sprawdzanego obiektu
	 * @param int $id - identyfikator sprawdzanego obiektu
	 * @param AuthUser $user - uzytkonwik dla którego sprawdzamy uprawnienie
	 */
//	public static function checkAccessToModifyAccess( $model, $id, $user = null, $silent = false );
	
	
	/**
     * Function check in silent mode
     * @param string|object $mixed - [model|object]
     * @param string $action
     * return bool - true is access, false is deny
     */
//	public function isAllowed( $mixed, $action );
	
	
}


?>